package bpce.Entry;

import java.util.List;

import plugin.bpce.modelo.ModeloAvaliado;
import coppeer.cell.Cell;
import coppeer.cell.Entry;

public class PublicaModeloEntry implements Entry {
	
	private static final long serialVersionUID = 6093296213923074448L;
	private boolean propagate = true, avaliou;
	private String nomeDiagrama, nomeAutor, nomeAgente;
	private List<ModeloAvaliado> listaModeloAvaliado;
	private int seqAlteracao;
	private Long data;

	public Long getData() {
		return data;
	}

	public void setData(Long data) {
		this.data = data;
	}

	public boolean getAvaliou() {
		return avaliou;
	}

	public void setAvaliou(boolean avaliou) {
		this.avaliou = avaliou;
	}

	public List<ModeloAvaliado> getListaModeloAvaliado() {
		return listaModeloAvaliado;
	}

	public void setListaModeloAvaliado(List<ModeloAvaliado> listaModeloAvaliado) {
		this.listaModeloAvaliado = listaModeloAvaliado;
	}

	public String getNomeAgente() {
		return nomeAgente;
	}

	public void setNomeAgente(String nomeAgente) {
		this.nomeAgente = nomeAgente;
	}

	public String getNomeAutor() {
		return nomeAutor;
	}

	public void setNomeAutor(String nomeAutor) {
		this.nomeAutor = nomeAutor;
	}

	public String getNomeDiagrama() {
		return nomeDiagrama;
	}

	public void setNomeDiagrama(String nomeDiagrama) {
		this.nomeDiagrama = nomeDiagrama;
	}

	public boolean afterPropagation() {
		return false;
	}

	public boolean beforePropagation() {
		if (propagate){
			propagate = false;
			return true;
		} else return false;
	}

	public Entry generatePropagation(Cell neighbor) {
		return this;
	}

	public long getPropagationLease(Cell neighbor) {
		return 10000;
	}

	public boolean matches(Entry template) {
		try{
			PublicaModeloEntry pme = (PublicaModeloEntry) template;
			
			if (this.nomeAgente.equalsIgnoreCase(pme.getNomeAgente()))
				return false;
			
			return true;
		}
		catch(Exception e){
			return false;
		}
	}

	public int getSeqAlteracao() {
		return seqAlteracao;
	}

	public void setSeqAlteracao(int seqAlteracao) {
		this.seqAlteracao = seqAlteracao;
	}

}
